5bdf786604c2c48134b8b58166d4259ed376d191,src/main/java/org/basex/core/DBLocking.java,DBLocking,acquire,#Progress#StringList#StringList#,81
Before Change
locks.put(object, lock);
}
}
lock.writeLock().lock();
}
}
After Change
int w = 0, r = 0;
while (r < readObjects.length || w < writeObjects.length) {
// Look what token comes earlier in alphabet, prefer writing against reading
if(w < writeObjects.length && (r >= readObjects.length
|| writeObjects[w].compareTo(readObjects[r]) <= 0)) {
ReentrantReadWriteLock lock;
synchronized(locks) { // Make sure each object lock is a singleton
lock = locks.get(writeObjects[w]);
if(null == lock) { // Create lock if needed
lock = new ReentrantReadWriteLock();
locks.put(writeObjects[w], lock);
}
}
lock.writeLock().lock();
w++; // Set pointer to next token
} else {
ReentrantReadWriteLock lock;